home *** CD-ROM | disk | FTP | other *** search
/ LOGIC Apps / Logic-APPLE_II_APPS.iso / pc / LOGIC Apple II 5.25" Library - DOS Part 3 / DOS066.dsk / RECIPE BOX.bas < prev    next >
BASIC Source File  |  2012-02-16  |  16KB  |  447 lines

  1. 10  REM  RECIPE BOX
  2. 20  REM  WRITTEN BY MARILYN FETTINGER
  3. 25  REM  PHONE NUMBER 312-395-0791
  4. 30  TEXT :MC = 30:MT = 100
  5. 40  DIM C$(MC +1),C(MC +1),T$(MT +2),T(MT +2)
  6. 50  DIM I$(20),U$(20),Q$(20),D$(20),SI$(3)
  7. 70 H$(1) = "ADD NEW RECIPE":H$(2) = "MODIFY RECIPE":H$(3) = "SELECTED RECIPIES":H$(4) = "PRESS RETURN FOR RECIPE LIST ":H$(5) = " CHARACTERS TOO LONG         ":H$(6) = "LINES LEFT":H$(7) = "CTRL I RETURN FOR INSTRUCTIONS"
  8. 80 DD$ =  CHR$(4)
  9. 90 F$ = "RECIPE FILE"
  10. 100 LR$ = "E                                       "
  11. 110 BL$ = "                                       "
  12. 120  HOME 
  13. 130  VTAB 9: HTAB 13: PRINT "THE RECIPE BOX"
  14. 140  VTAB 11: HTAB 10: PRINT "BY MARILYN FETTINGER"
  15. 145  VTAB 15: HTAB 6: PRINT "PRESS RETURN FOR RECIPE FILE"
  16. 150  VTAB 17: HTAB 6: PRINT "OR ENTER FILE NAME (MAX 15)": PRINT : HTAB 11: INPUT " ";R$
  17. 155  IF  LEN(R$) >15  THEN  HTAB 12: PRINT  LEN(R$) -15;H$(5);: GOTO 150
  18. 160  IF R$ < >""  THEN F$ = R$
  19. 165  GOTO 5000
  20. 180  HOME 
  21. 190  HTAB 5: PRINT "RECIPE BOX FUNCTIONS": PRINT 
  22. 200  PRINT "1 - RETRIEVE RECIPIES FROM FILE"
  23. 210  PRINT "2 - ADD RECIPIES TO FILE"
  24. 220  PRINT "3 - REORGANIZE FILE"
  25. 230  PRINT "4 - EXIT PROGRAM"
  26. 240  VTAB 14: HTAB 5: PRINT "STATISTICS FOR ";F$: PRINT 
  27. 250  HTAB 5: PRINT "NUMBER OF RECIPIES";: HTAB 25: PRINT NA
  28. 260  HTAB 5: PRINT "DELETED RECORDS";: HTAB 25: PRINT NX
  29. 270  HTAB 5: PRINT "TOTAL RECORDS";: HTAB 25: PRINT NR -1
  30. 280  VTAB 10: INPUT "    SELECT FUNCTION ";R$
  31. 290 I =  VAL(R$)
  32. 300  IF I <1  OR I >4  THEN  PRINT "    INVALID FUNCTION": GOTO 280
  33. 305  IF I = 2  AND NT = MT  THEN  PRINT "FILE FULL": GOTO 280
  34. 310  PRINT BL$
  35. 320  ON I GOTO 1000,2000,3000,4000
  36. 1000  REM  SELECT RECIPIES
  37. 1010  HOME : HTAB 10: PRINT "SELECT RECIPIES": PRINT 
  38. 1015  FOR I = 1 TO NT: IF  LEFT$(T$(I),1) < >"X"  THEN T$(I) = "T" + RIGHT$(T$(I),39)
  39. 1020  NEXT I
  40. 1025  IF NT = 0  THEN  VTAB 20: HTAB 1: INPUT "NO RECIPES IN FILE - PRESS RETURN ";R$: GOTO 180
  41. 1030 C$(NC) = "ALL CATEGORIES": GOSUB 6300:SC = C
  42. 1040  VTAB 20: INPUT "ENTER TITLE ";ST$
  43. 1050 L =  LEN(ST$)
  44. 1060  IF L >24  THEN  PRINT L -24;H$(5);: GOTO 1040
  45. 1070  PRINT BL$;:SI = 0
  46. 1080  FOR I = 1 TO 3
  47. 1090  VTAB 20 +I: HTAB 1: PRINT "INGREDIENT ";I;" ";
  48. 1095 SI$(I) = ""
  49. 1100  INPUT SI$(I)
  50. 1110  IF SI$(I) = ""  THEN 1160
  51. 1120 L =  LEN(SI$(I))
  52. 1130  IF L >27  THEN  PRINT L -27;H$(5);: GOTO 1090
  53. 1140  PRINT BL$;:SI = SI +1
  54. 1150  NEXT I
  55. 1160  HOME 
  56. 1170 NS = 0:BS = C(SC):ES = BS
  57. 1200  FOR I = BS TO NT
  58. 1205 SS = 1: IF  LEFT$(T$(I),1) = "X"  THEN 1310
  59. 1210  IF SC < >NC  THEN  IF C$(SC) < > MID$ (T$(I),2,15)  THEN 1320
  60. 1220  IF ST$ < >""  THEN  IF ST$ < > MID$ (T$(I),17, LEN(ST$))  THEN 1300
  61. 1230  IF SI = 0  THEN 1260
  62. 1240 RN = T(I): GOSUB 6000
  63. 1250  IF SS =  -1  THEN 1300
  64. 1260 T$(I) = "1" + RIGHT$(T$(I),39)
  65. 1270 NS = NS +1
  66. 1280 ES = I
  67. 1290  GOTO 1310
  68. 1300 T$(I) = " " + RIGHT$(T$(I),39)
  69. 1310  NEXT I
  70. 1320  IF NS = 0  THEN  HOME : HTAB 10: PRINT H$(3): VTAB 23: HTAB 1: INPUT "NO RECIPIES SELECTED - PRESS RETURN ";R$: GOTO 1000
  71. 1330 NL = 0:C$ = "               ":SS = 0
  72. 1335  FOR I = BS TO ES
  73. 1340  IF  LEFT$(T$(I),1) < >"1"  THEN 1400
  74. 1350  IF NL >12  THEN  GOSUB 7800:NL = 0: IF J <5  THEN 1420
  75. 1360  IF NL = 0  THEN  HOME : HTAB 10: PRINT H$(3):NL = 1
  76. 1370  IF NL = 1  OR C$ < > MID$ (T$(I),2,15)  THEN C$ =  MID$ (T$(I),2,15): PRINT : HTAB 3: PRINT C$:NL = NL +2
  77. 1380 NL = NL +1
  78. 1390  PRINT I;" "; MID$ (T$(I),17,24)
  79. 1400  NEXT I
  80. 1410 SS = 1: GOSUB 7800
  81. 1420  VTAB 23: HTAB 1: INPUT "SELECT RECIPE NUMBER ";R$
  82. 1430  IF R$ = ""  THEN 1000
  83. 1440 T =  VAL(R$)
  84. 1450  IF T <1  OR  LEFT$(T$(T),1) < >"1"  OR T >NT  THEN  PRINT "INVALID RECIPE NUMBER";: GOTO 1420
  85. 1460 RN = T(T):SS = 0: GOSUB 6000
  86. 1470  ON J GOTO 1500,1600,1800,1900
  87. 1500  REM  DISPLAY RECIPE
  88. 1510  HOME :NL = 2: PRINT T$;" ";C$
  89. 1520  FOR I = 1 TO NI: PRINT Q$(I);" "U$(I);" ";I$(I):NL = NL +1: NEXT I
  90. 1530  PRINT :NL = NL +1
  91. 1540  FOR I = 1 TO ND
  92. 1550  IF NL >21  THEN  VTAB 24: INPUT "PRESS RETURN FOR NEXT PAGE ";R$: HOME :NL = 2: PRINT T$;" "C$
  93. 1560  PRINT D$(I)
  94. 1570 NL = NL +1
  95. 1580  NEXT I
  96. 1585  VTAB 24: PRINT H$(4);: INPUT " ";R$
  97. 1590  GOTO 1330
  98. 1600  REM  PRINT RECIPE
  99. 1610  HOME : HTAB 10: PRINT "PRINT RECIPE": PRINT : INPUT "READY PRINTER AND PRESS RETURN";R$
  100. 1620  REM  TURN ON PRINTER
  101. 1630  PRINT  SPC( 20);T$; SPC( 20);C$: PRINT 
  102. 1640  FOR I = 1 TO 10
  103. 1650  IF NI <I  THEN  PRINT : GOTO 1680
  104. 1660  PRINT Q$(I);" ";U$(I);" ";I$(I);" ";
  105. 1665  IF NI <11  THEN  PRINT " ": GOTO 1680
  106. 1670  PRINT Q$(I +10);" ";U$(I +10);" ";I$(I +10)
  107. 1680  NEXT I
  108. 1690  PRINT 
  109. 1700  FOR I = 1 TO 20  STEP 2
  110. 1710  IF ND <I  THEN 1760
  111. 1715  FOR J = 39 TO 1  STEP  -1: IF  MID$ (D$(I),J,1) < >" "  THEN 1720
  112. 1716  NEXT J
  113. 1720  PRINT  LEFT$(D$(I),J);" ";
  114. 1725  IF  MID$ (D$(I),J,1) = "."  THEN  PRINT  SPC( 2);
  115. 1730  IF ND <I +1  THEN  PRINT " ": GOTO 1760
  116. 1740  PRINT D$(I +1)
  117. 1750  NEXT I
  118. 1760  REM  TURN OFF PRINTER
  119. 1780  PRINT : PRINT "RECIPE PRINTED": PRINT : PRINT H$(4);: INPUT " ";R$
  120. 1790  GOTO 1330
  121. 1800  REM  MODIFY RECIPE
  122. 1810 H = 2:SI = NI:SD = ND: GOSUB 7000
  123. 1820  IF SI = NI  AND SD = ND  THEN SR = NR:NR = T(T)
  124. 1830 T(T) = NR
  125. 1840  GOSUB 6700
  126. 1845  IF SR < >0  THEN NR = SR: GOTO 1860
  127. 1850 NI = SI:ND = SD: GOSUB 6900:T$(T) = "1" +C$ +T$
  128. 1860  HOME : HTAB 10: PRINT H$(2): PRINT 
  129. 1880  PRINT "RECIPE MODIFIED": PRINT : PRINT H$(4);: INPUT " ";R$
  130. 1890  GOTO 1330
  131. 1900  REM  DELETE RECIPE
  132. 1910  HOME : HTAB 10: PRINT "DELETE RECIPE": PRINT 
  133. 1920  VTAB 3: HTAB 1: PRINT C$;" ";T$
  134. 1930  VTAB 5: HTAB 1: INPUT "DELETE RECIPE (Y OR N) ";R$
  135. 1940  IF R$ < >"Y"  AND R$ < >"N"  THEN  PRINT "INVALID REPLY ": GOTO 1920
  136. 1950  IF R$ = "N"  THEN 1990
  137. 1955  PRINT BL$
  138. 1960  GOSUB 6900
  139. 1970  PRINT "RECIPE DELETED": PRINT : PRINT H$(4);: INPUT " ";R$
  140. 1980 NS = NS -1:NA = NA -1
  141. 1990  GOTO 1320
  142. 2000  REM  ADD RECIPE TO FILE
  143. 2010  HOME : HTAB 10: PRINT H$(1): PRINT 
  144. 2020 C$(NC) = "NEW CATEGORY   ": GOSUB 6300
  145. 2040  IF C < >NC  THEN C$ = C$(C): GOTO 2110
  146. 2050  VTAB 20: HTAB 1: INPUT "ENTER CATEGORY (MAX 15) ";C$
  147. 2070 L =  LEN(C$)
  148. 2080  IF L >15  THEN  VTAB 21: HTAB 1: PRINT L -15;H$(5);: GOTO 2050
  149. 2090  PRINT BL$
  150. 2100  IF L < >15  THEN  FOR I = L +1 TO 15:C$ = C$ +" ": NEXT I
  151. 2110  VTAB 21: HTAB 1: PRINT "ENTER TITLE (MAX 24)"
  152. 2120  INPUT " ";T$
  153. 2130 L =  LEN(T$)
  154. 2140  IF L >24  THEN  VTAB 23: HTAB 1: PRINT L -24;H$(5);: GOTO 2110
  155. 2150  PRINT BL$
  156. 2160  IF L < >24  THEN  FOR I = L +1 TO 24:T$ = T$ +" ": NEXT I
  157. 2180 H = 1:ND = 0:NI = 0: GOSUB 7000
  158. 2500  HOME : HTAB 10: PRINT H$(1);
  159. 2510  VTAB 3: HTAB 1: PRINT "ADDING RECIPE - PLEASE WAIT";
  160. 2520 NT = NT +1:T(NT) = NR: GOSUB 6700
  161. 2525  IF C < >NC  THEN 2550
  162. 2530 C$(NC) = C$:C(NC) = NT
  163. 2540 NC = NC +1:C(NC) = 1
  164. 2550 T$(NT) = "T" +C$ +T$
  165. 2555 NA = NA +1
  166. 2560  VTAB 5: HTAB 1: INPUT "ADD ANOTHER RECIPE (Y OR N) ";R$
  167. 2570  IF R$ < >"Y"  AND R$ < >"N"  THEN  PRINT "INVALID REPLY ": GOTO 2560
  168. 2575  IF R$ = "Y"  AND NT = MT  THEN  INPUT "FILE FULL PRESS RETURN ";R$:R$ = "N"
  169. 2580  IF R$ = "Y"  THEN 2000
  170. 2590  PRINT DD$;"CLOSE ";F$
  171. 2595  PRINT DD$;"OPEN ";F$;", L41"
  172. 2600  GOSUB 5400: GOSUB 5700
  173. 2610  GOTO 180
  174. 3000  REM  REORGANIZE FILE
  175. 3010  HOME : HTAB 10: PRINT "REORGANIZE FILE": PRINT : PRINT "REORGANIZE IN PROCESS - PLEASE WAIT"
  176. 3030 NR = 1:SF$ = F$:NX = 0:NA = 0:SS = 0
  177. 3040  GOSUB 5400
  178. 3045  IF NT = 0  THEN 3200
  179. 3050  PRINT DD$;"OPEN WORK1, L41"
  180. 3060  FOR I = 1 TO NT
  181. 3080 RN = T(I):F$ = SF$: GOSUB 6000
  182. 3090 F$ = "WORK1":T(I) = NR: GOSUB 6700
  183. 3100  NEXT I
  184. 3120 F$ = SF$:NA = NT
  185. 3125  PRINT DD$;"WRITE WORK1, R";NR
  186. 3126  PRINT LR$
  187. 3127  PRINT DD$
  188. 3130  PRINT DD$;"CLOSE ";F$
  189. 3140  PRINT DD$;"CLOSE WORK1"
  190. 3150  PRINT DD$;"RENAME ";F$;",WORK2"
  191. 3160  PRINT DD$;"RENAME WORK1,";F$
  192. 3170  PRINT DD$;"DELETE WORK2"
  193. 3180  GOSUB 5700
  194. 3190  PRINT DD$;"OPEN ";F$;", L41"
  195. 3200  PRINT : PRINT "FILE REORGANIZED"
  196. 3210  PRINT : INPUT "PRESS RETURN ";R$
  197. 3220  GOTO 180
  198. 4000  REM  CLOSE FILE
  199. 4010  PRINT DD$;"CLOSE ";F$
  200. 4020  HOME 
  201. 4030  GOSUB 5400: GOSUB 5700
  202. 4040  END 
  203. 5000  REM  OPEN FILES AND BUILD INDEX
  204. 5010 NA = 0:NC = 0:SR = 0:C$ = "                "
  205. 5020  ONERR  GOTO 5090
  206. 5030  PRINT DD$;"OPEN INDEX";F$
  207. 5040  FOR NT = 1 TO MT +2
  208. 5050  PRINT DD$;"READ INDEX";F$
  209. 5060  INPUT T(NT)
  210. 5070  PRINT DD$
  211. 5080  NEXT NT
  212. 5085 NT = NT +1
  213. 5090  POKE 216,0
  214. 5100  PRINT DD$;"CLOSE INDEX";F$
  215. 5110  PRINT DD$;"OPEN ";F$;", L41"
  216. 5120  IF NT = 1  THEN 5230
  217. 5130 NT = NT -3:NR = T(NT +1):NX = T(NT +2)
  218. 5140  FOR I = 1 TO NT
  219. 5150  PRINT DD$;"READ ";F$;",R";T(I)
  220. 5160  INPUT R$
  221. 5170  PRINT DD$
  222. 5175 T$(I) =  LEFT$(R$,40)
  223. 5180  IF C$ =  MID$ (T$(I),2,15)  THEN 5200
  224. 5190 NC = NC +1:C$ =  MID$ (T$(I),2,15):C$(NC) = C$:C(NC) = I
  225. 5200  NEXT I
  226. 5210 NC = NC +1:C(NC) = 1:NA = NT
  227. 5220  GOTO 180
  228. 5230 NR = 1:SS = 0:NT = 0: ONERR  GOTO 5320
  229. 5240  PRINT DD$;"READ ";F$;", R";NR
  230. 5250  INPUT R$
  231. 5260  PRINT DD$
  232. 5265 T$ =  LEFT$(R$,1)
  233. 5270  IF T$ = "E"  THEN 5320
  234. 5275 NR = NR +1
  235. 5280  IF T$ = "X"  THEN SS = 1
  236. 5285  IF T$ < >"T"  AND SS = 1  THEN NX = NX +1
  237. 5290  IF T$ < >"T"  THEN 5240
  238. 5300 NT = NT +1:T$(NT) =  LEFT$(R$,40):T(NT) = NR -1:SS = 0
  239. 5310  GOTO 5240
  240. 5320  PRINT DD$;"CLOSE ";F$
  241. 5330  POKE 216,0
  242. 5340  PRINT DD$;"OPEN ";F$;", L41"
  243. 5380 NA = NT: GOSUB 5400: GOSUB 5700
  244. 5390  GOTO 180
  245. 5400  REM  SORT INDEX OF TITLES
  246. 5405  IF NT = 0  OR NT = 1  THEN 5570
  247. 5410 C1 = NT +1:C3 = 1:C4 = 1
  248. 5420 C1 =  INT(C1/2)
  249. 5430  IF C1 = 0  THEN 5570
  250. 5440 C2 = NT -C1
  251. 5450  FOR I = 1 TO C2
  252. 5460 C3 = I +C1:C4 = I
  253. 5470 T$ = T$(C3):T = T(C3)
  254. 5480  IF T$(C4) < = T$  THEN 5530
  255. 5490 C3 = C4 +C1
  256. 5500 T$(C3) = T$(C4):T(C3) = T(C4)
  257. 5510 C4 = C4 -C1
  258. 5520  IF C4 >1  THEN 5480
  259. 5530 C3 = C4 +C1
  260. 5540 T$(C3) = T$:T(C3) = T
  261. 5550  NEXT I
  262. 5560  GOTO 5420
  263. 5570 NC = 0:C$ = "               "
  264. 5575  IF NT = 0  THEN 5640
  265. 5580  FOR I = 1 TO NT
  266. 5585  IF  LEFT$(T$(I),1) = "X"  THEN NT = I -1: GOTO 5640
  267. 5590  IF C$ =  MID$ (T$(I),2,15)  THEN 5630
  268. 5600 NC = NC +1
  269. 5610 C$ =  MID$ (T$(I),2,15)
  270. 5620 C$(NC) = C$:C(NC) = I
  271. 5630  NEXT I
  272. 5640 NC = NC +1
  273. 5650 C(NC) = 1
  274. 5660  RETURN 
  275. 5700  REM  WRITE INDEX
  276. 5710 J = NT +2:T(J -1) = NR:T(J) = NX
  277. 5715  PRINT DD$;"DELETE INDEX";F$
  278. 5720  PRINT DD$;"OPEN INDEX";F$
  279. 5730  FOR I = 1 TO J
  280. 5735  IF  LEFT$(T$(I),1) = "X"  THEN 5770
  281. 5740  PRINT DD$;"WRITE INDEX";F$
  282. 5750  PRINT T(I)
  283. 5760  PRINT DD$
  284. 5770  NEXT I
  285. 5780  PRINT DD$;"CLOSE INDEX";F$
  286. 5790  RETURN 
  287. 6000  REM  READ IN RECIPE
  288. 6010  PRINT DD$;"READ ";F$;", R";RN
  289. 6020  INPUT R$
  290. 6025  PRINT DD$
  291. 6030 T$ =  MID$ (R$,17,24)
  292. 6040 C$ =  MID$ (R$,2,15)
  293. 6050 NI = 0
  294. 6060  PRINT DD$;"READ ";F$;", R";RN +NI +1
  295. 6070  INPUT R$
  296. 6075  PRINT DD$
  297. 6080  IF  LEFT$(R$,1) < >"I"  THEN 6140
  298. 6090 NI = NI +1
  299. 6100 Q$(NI) =  MID$ (R$,2,5):U$(NI) =  MID$ (R$,7,5):I$(NI) =  MID$ (R$,12,27)
  300. 6110  IF SS = 0  THEN 6060
  301. 6120  FOR J = 1 TO SI
  302. 6125  IF SI$(J) =  MID$ (I$(NI),1, LEN(SI$(J)))  THEN 6210
  303. 6127  NEXT J
  304. 6130  GOTO 6060
  305. 6140  IF SS = 1  THEN SS =  -1: GOTO 6210
  306. 6145 ND = 0
  307. 6150  PRINT DD$;"READ ";F$;", R";RN +NI +ND +1
  308. 6160  INPUT R$
  309. 6165  PRINT DD$
  310. 6170  IF  LEFT$(R$,1) < >"D"  THEN 6210
  311. 6180 ND = ND +1
  312. 6190 D$(ND) =  MID$ (R$,2,39)
  313. 6200  GOTO 6150
  314. 6210  RETURN 
  315. 6300  REM  PRINT CATEGORIES AND INPUT
  316. 6320  FOR I = 1 TO 29  STEP 2
  317. 6330  IF I < = NC  THEN  PRINT I;" ";C$(I);
  318. 6340  IF I +1 < = NC  THEN  HTAB 20: PRINT I +1;" ";C$(I +1)
  319. 6350  NEXT I
  320. 6360  PRINT 
  321. 6370  VTAB 19: INPUT "ENTER CATEGORY NUMBER ";C$
  322. 6373  IF C$ = ""  THEN 180
  323. 6375 C =  VAL(C$)
  324. 6380  IF C <1  OR C >NC  THEN  PRINT "INVALID CATEGORY NUMBER": GOTO 6370
  325. 6390  PRINT BL$:
  326. 6400  RETURN 
  327. 6700  REM  WRITE RECIPE
  328. 6710 R$ = "T" +C$ +T$
  329. 6715  PRINT DD$
  330. 6720  PRINT DD$;"WRITE ";F$;", R";NR
  331. 6730  PRINT R$
  332. 6740 NR = NR +1
  333. 6750  FOR I = 1 TO NI
  334. 6760 R$ = "I" +Q$(I) +U$(I) +I$(I) +"  "
  335. 6770  PRINT DD$;"WRITE ";F$;", R";NR
  336. 6780  PRINT R$
  337. 6785  PRINT DD$
  338. 6790 NR = NR +1
  339. 6800  NEXT I
  340. 6810  FOR I = 1 TO ND
  341. 6820 R$ = "D" +D$(I)
  342. 6830  PRINT DD$;"WRITE ";F$;", R";NR
  343. 6840  PRINT R$
  344. 6845  PRINT DD$
  345. 6850 NR = NR +1
  346. 6860  NEXT I
  347. 6864  IF SR < >0  THEN 6880
  348. 6865  PRINT DD$;"WRITE ";F$;", R";NR
  349. 6866  PRINT LR$
  350. 6870  PRINT DD$
  351. 6880  RETURN 
  352. 6900  REM  DELETE RECIPE
  353. 6910 T$(T) = "X" + RIGHT$(T$,39)
  354. 6920  PRINT DD$;"WRITE ";F$;", R";RN
  355. 6930  PRINT T$(T)
  356. 6940  PRINT DD$
  357. 6950 NX = NX +ND +NI +1
  358. 6960  RETURN 
  359. 7000  REM   INPUT RECIPE INGREDIENTS AND DIRECTIONS
  360. 7005 SS = 0:C1 = 1:C2 = 1
  361. 7010  HOME : HTAB 10: PRINT H$(H): PRINT : PRINT " QUAN  UNIT  INGREDIENT"
  362. 7020  IF NI >0  THEN  FOR I = 1 TO NI: PRINT " ";Q$(I);" ";U$(I);" ";I$(I);: NEXT I
  363. 7025  VTAB 24: HTAB 1: PRINT "CTRL I RETURN FOR INSTRUCTIONS";
  364. 7040  IF C1 <NI +1  THEN  VTAB C1 +3: HTAB 1: PRINT " ";Q$(C1);" ";U$(C1);" ";I$(C1);
  365. 7045  VTAB C1 +3: HTAB ((C2 -1) *6) +1: INPUT " ";R$
  366. 7046  IF C2 = 1  THEN SW = 0
  367. 7050  IF R$ = ""  THEN SS = 1:C4 = C2 +1
  368. 7055  IF R$ = ""  AND C1 >NI  THEN R$ = " ":SS = 0:SW = SW +1
  369. 7060 P$ =  LEFT$(R$,1)
  370. 7065  IF P$ =  CHR$(09)  THEN  GOSUB 7700: GOTO 7010
  371. 7070  IF P$ =  CHR$(14)  THEN SS = 1:C3 = C1 +1:C4 = 1
  372. 7080  IF P$ =  CHR$(16)  THEN SS = 1:C3 = C1 -1:C4 = 1
  373. 7090  IF P$ =  CHR$(20)  THEN SS = 1:C3 = 1:C4 = 1
  374. 7100  IF P$ =  CHR$(02)  THEN SS = 1:C3 = NI +1: IF C3 = 21  THEN C3 = 20
  375. 7110  IF P$ =  CHR$(5)  THEN SS = 2
  376. 7120  IF SS = 0  THEN  ON C2 GOTO 7210,7280,7340
  377. 7130  IF C1 <NI +1  THEN  VTAB C1 +3: HTAB 1: PRINT " ";Q$(C1);" ";U$(C1);" ";I$(C1);
  378. 7140  IF SS = 2  THEN 7400
  379. 7150  IF C4 >3  THEN C4 = 1:C3 = C3 +1
  380. 7160  IF C3 >20  OR C3 <1  THEN C3 = 1
  381. 7170  IF C3 >NI +1  THEN C3 = NI +1
  382. 7180 C1 = C3:C2 = C4:SS = 0: GOTO 7040
  383. 7210 L =  LEN(R$)
  384. 7220  IF L >5  THEN  VTAB 24: HTAB 1: PRINT L -5;H$(5);: GOTO 7045
  385. 7230  VTAB 24: HTAB 1: PRINT H$(7);
  386. 7240  IF L < >5  THEN  FOR J = L +1 TO 5:R$ = R$ +" ": NEXT J
  387. 7250 C2 = 2:Q$(C1) = R$
  388. 7260  GOTO 7040
  389. 7280 L =  LEN(R$)
  390. 7290  IF L >5  THEN  VTAB 24: HTAB 1: PRINT L -5;H$(5);: GOTO 7045
  391. 7300  VTAB 24: HTAB 1: PRINT H$(7);
  392. 7310  IF L < >5  THEN  FOR J = L +1 TO 5:R$ = R$ +" ": NEXT J
  393. 7320 C2 = 3:U$(C1) = R$
  394. 7330  GOTO 7040
  395. 7340 L =  LEN(R$)
  396. 7350  IF L >27  THEN  VTAB 24: HTAB 1: PRINT L -27;H$(5);: GOTO 7045
  397. 7360  VTAB 24: HTAB 1: PRINT H$(7);
  398. 7370  IF L < >27  THEN  FOR J = L +1 TO 27:R$ = R$ +" ": NEXT J
  399. 7380 C4 = 1:C3 = C1 +1:I$(C1) = R$: IF C1 >NI  AND SW < >3  THEN NI = NI +1
  400. 7390  GOTO 7150
  401. 7400 SS = 0:C1 = 1
  402. 7405  HOME : HTAB 10: PRINT H$(H): HTAB 12: PRINT "DIRECTIONS"
  403. 7410  IF ND >0  THEN  FOR I = 1 TO ND: VTAB I +3: HTAB 1: PRINT " ";D$(I);: NEXT I
  404. 7420  VTAB 24: HTAB 1: PRINT "CTRL I RETURN FOR INSTRUCTIONS";
  405. 7440  IF C1 <ND +1  THEN  VTAB C1 +3: HTAB 1: PRINT " ";D$(C1);
  406. 7445  VTAB C1 +3: HTAB 1: INPUT " ";R$
  407. 7450  IF R$ = ""  THEN SS = 1:C3 = C1 +1
  408. 7455  IF R$ = ""  AND C1 >ND  THEN 7445
  409. 7460 P$ =  LEFT$(R$,1)
  410. 7465  IF P$ =  CHR$(09)  THEN  GOSUB 7700: GOTO 7405
  411. 7470  IF P$ =  CHR$(14)  THEN SS = 1:C3 = C1 +1
  412. 7480  IF P$ =  CHR$(16)  THEN SS = 1:C3 = C1 -1
  413. 7490  IF P$ =  CHR$(20)  THEN SS = 1:C3 = 1
  414. 7500  IF P$ =  CHR$(02)  THEN SS = 1:C3 = ND +1: IF C3 = 21  THEN C3 = 20
  415. 7510  IF P$ =  CHR$(5)  THEN SS = 2
  416. 7520  IF SS = 0  THEN 7600
  417. 7530  IF C1 <ND +1  THEN  VTAB C1 +3: HTAB 1: PRINT " ";D$(C1);
  418. 7540  IF SS = 2  THEN  RETURN 
  419. 7560  IF C3 >20  OR C3 <1  THEN C3 = 1
  420. 7570  IF C3 >ND +1  THEN C3 = ND +1
  421. 7580 C1 = C3:SS = 0: GOTO 7440
  422. 7600 L =  LEN(R$)
  423. 7610  IF L >39  THEN  VTAB 24: HTAB 1: PRINT L -39;H$(5);: GOTO 7445
  424. 7620  VTAB 24: HTAB 1: PRINT H$(7);
  425. 7630  IF L < >39  THEN  FOR J = L +1 TO 39:R$ = R$ +" ": NEXT J
  426. 7640 C3 = C1 +1:D$(C1) = R$: IF C1 >ND  THEN ND = ND +1
  427. 7650  GOTO 7560
  428. 7700  REM  PRINT INSTRUCTIONS
  429. 7710  HOME : HTAB 10: PRINT H$(H): PRINT 
  430. 7720  PRINT "TO POSITION CURSOR USE"
  431. 7730  PRINT "CTRL N RETURN - NEXT LINE"
  432. 7740  PRINT "CTRL P RETURN - PREVIOUS LINE"
  433. 7750  PRINT "CTRL T RETURN - TOP LINE"
  434. 7760  PRINT "CTRL B RETURN - BOTTOM LINE"
  435. 7770  PRINT "       RETURN - NEXT FIELD"
  436. 7780  PRINT : PRINT "TO END DISPLAYED PAGE": PRINT "CTRL E RETURN - END PAGE"
  437. 7790  VTAB 24: HTAB 1: INPUT "PRESS RETURN FOR RECIPE ";R$: RETURN 
  438. 7800  REM   DISPLAY OPTIONS   
  439. 7810  VTAB 16: HTAB 1: PRINT "1 - DISPLAY RECIPE";: HTAB 20: PRINT "4 - DELETE RECIPE"
  440. 7820  PRINT "2 - PRINT RECIPE";: HTAB 20: PRINT "5 - NEXT PAGE OF"
  441. 7830  PRINT "3 - MODIFY RECIPE";: HTAB 24: PRINT "SELECTED RECIPIES"
  442. 7840  VTAB 20: HTAB 1: INPUT "SELECT OPTION ";R$
  443. 7850  IF R$ = ""  THEN 1000
  444. 7860 J =  VAL(R$)
  445. 7870  IF J >0  AND J <5  THEN  RETURN 
  446. 7880  IF J = 5  AND SS = 0  THEN  RETURN 
  447. 7890  PRINT "INVALID OPTION": GOTO 7840